<?php

namespace Cargadatos\Model\Dao;

use Cargadatos\Model\Entity\Cargadatos;
use Zend\Json\Encoder as Codificador;

class CargadatosDao {
    
    private $_rutaArchivo;
    private $_cadenaNormal = array();
    private $_cadenaJson;
    private $_cadenaRes;
    
    public function __construct()
    {
        //$this->_cadenaNormal = file($rutaArchivo);
        $this->setRutaArchivo("C:\\Captura_DESC_D1_rcs_cdf.txt");
    }
    
    public function getRutaArchivo() {
        return $this->_rutaArchivo;
    }

    public function setRutaArchivo($rutaArchivo) {
        $this->_rutaArchivo = $rutaArchivo;
    }
    
    public function construye()
    {
        $this->_cadenaNormal = file($this->getRutaArchivo());
    }
    
    public function getCadenaNormal() {
        return $this->_cadenaNormal;
    }
    
    public function setCadenaJson($cadenaJson) {
        $this->_cadenaJson = $cadenaJson;
    }

    public function getCadenaJson() {
        return $this->_cadenaJson;
    }
    
    public function getCadenaRes() {
        return $this->_cadenaRes;
    }

    public function setCadenaRes($cadenaRes) {
        $this->_cadenaRes = $cadenaRes;
    }
    
    public function cargaDatosArray()
    {
        $contador = 0;
        $n = count($this->getCadenaNormal()) - 5;
        $auxiliar = $this->getCadenaNormal();
        $datos = array();
        
        for($i=0; $i<=$n; $i++)
        {
            //Obtengo cada una de las lineas y las separo por pipes para generar la cadena json
            $arregloAuxiliar = explode("|", $auxiliar[$i]);
            
            $cadenaRes = array(
                    'Id'=> ++$contador,
                    'R' => trim($arregloAuxiliar[0]),
                    'rango' => trim($arregloAuxiliar[1]),
                    'letras' => trim($arregloAuxiliar[2]),
                    'id_grupo' => trim($arregloAuxiliar[3]),
                    'id_prov' => trim($arregloAuxiliar[4]),
                    'id_marca' => trim($arregloAuxiliar[5]),
                    'id_num_art' => trim($arregloAuxiliar[6]),
                    'original' => trim($arregloAuxiliar[7]),
                    'descripcion' => trim($arregloAuxiliar[8]),
                    'armadora' => trim($arregloAuxiliar[9]),
                    'ap_mca_auto' => trim($arregloAuxiliar[10]),
                    'anio' => trim($arregloAuxiliar[11]),
                    'ap_cil' => trim($arregloAuxiliar[12]),
                    'ap_pos' => trim($arregloAuxiliar[13]),
                    'ap_car' => trim($arregloAuxiliar[14]),
                    'ap_motor' => trim($arregloAuxiliar[15]),
                    'eca' => trim($arregloAuxiliar[16]),
                    'ms' => trim($arregloAuxiliar[17]),
                    'upv' => trim($arregloAuxiliar[18])
                    );
            $datos[$arregloAuxiliar[6]] = $cadenaRes;
                                      
        }
        
        $this->setCadenaRes($datos);
        
    }

            
    public function generaCadenaJson()
    {
        $contador = 0;
        $cantidadMostrar = 0;
        $ban = 0;
        $this->construye();
        $this->cargaDatosArray();
        $arregloArticulos = $this->getCadenaRes();
        
        $arregloAuxiliar = array();
        
        foreach($arregloArticulos as $key => $articulos)
        {
            
            //$llave = trim($key);
            
            /*if($llave == $art)
            {
                $ban = 1;
                $arregloAuxiliar[] = $articulos;
                $contador++;
            }
            else
            {
                if($ban == 1)
                {*/
                    if($contador <= 59)
                        $arregloAuxiliar[] = $articulos;
                    
                    $contador++;
                //}
            //}
            //$cantidadMostrar++;
            
        }
        
        $this->generadorCadena($arregloAuxiliar);
                   
    }
    
    public function buscarPorArticulo($articulo)
    {
        $contador = 0;
        $ban = 0;

        $art = htmlspecialchars($articulo, ENT_QUOTES);
        //$this->getCadenaJson();
        //LLAMANDO A LA FUNCION QUE EXTRAE LOS DATOS
        $this->construye();
        $this->cargaDatosArray();
        $arregloArticulos = $this->getCadenaRes();
        
        $arregloAuxiliar = array();
        
        foreach($arregloArticulos as $key => $articulos)
        {
            $llave = trim($key);
            
            if($llave == $art)
            {
                $ban = 1;
                $arregloAuxiliar[] = $articulos;
                $contador++;
            }
            else
            {
                if($ban == 1)
                {
                    if($contador <= 59)
                        $arregloAuxiliar[] = $articulos;
                    
                    $contador++;
                }
            }
        }
        
        $this->generadorCadena($arregloAuxiliar);
        
    }
    
    public function busquedaGeneral($cadena)
    {
        $contador = 0;
        $cads = htmlspecialchars($cadena, ENT_QUOTES);
        //LLAMANDO A LA FUNCION QUE EXTRAE LOS DATOS
        $this->construye();
        $this->cargaDatosArray();
        $arregloArticulos = $this->getCadenaRes();
        $indices = array('R','rango','id_num_art','eca','ms');
        $arregloAuxiliar = array();
        
        foreach($arregloArticulos as $articulos)
        {
            foreach($articulos as $key => $values)
            {
                $llave = trim($values);
                if($llave == $cads)
                {
                    $arregloAuxiliar[] = $articulos;
                    //$contador++;
                }
            }
            
        }
        
        $this->generadorCadena($arregloAuxiliar);
    }
    
    public function generadorCadena($arregloAuxiliar)
    {
        $i = 0;
        $indices = array('R','rango','id_num_art','eca','ms');
        $cadenaJSON = array();
        $ban2 = 0;
        
        //Formando La cadena JSON
        foreach($arregloAuxiliar as $arrAux)
        {
            foreach($arrAux as $key => $value)
            {
                if($key == "Id")
                    $arreglo->rows[$i]['id'] = $value;
                else
                {
                    if($key == "upv")
                    {
                        $cadenaJSON[] = $value;
                        $cadenaJSON[] = "";
                        $cadenaJSON[] = "";
                    }
                    else
                    {
                        foreach($indices as $index)
                        {
                            if($key == $index)
                            {
                                $ban2 = 1;
                                $cadenaJSON[] = $value;
                                $cadenaJSON[] = "";
                            }
                                
                        }
                    }
                }
                
                if($ban2 == 0)
                    $cadenaJSON[] = $value;
                else
                    $ban2 = 0;
            }
            $arreglo->rows[$i]['cell'] = $cadenaJSON;
            $i++;
            unset($cadenaJSON);
            $cadenaJSON = array();
        }
        
        $n = $i;
        $page = 1;
        $limit = $i;
        $n > 0 ? $total_pages = ceil($n / $limit) : $total_pages = 0;
        if($page > $total_pages) $page = $total_pages;
        
        $arreglo->page = $page;
        $arreglo->total = $total_pages;
        $arreglo->records = $n;
                
        $this->setCadenaJson(Codificador::encode($arreglo, true));
        
    }
    






}


